home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / msh-156.lha / dev / mkci.c < prev    next >
C/C++ Source or Header  |  1996-12-22  |  4KB  |  147 lines

  1. /*
  2.  * $Id: mkci.c,v 1.56 1996/12/21 23:34:35 Rhialto Rel $
  3.  * $Log: mkci.c,v $
  4.  * Revision 1.56  1996/12/21  23:34:35  Rhialto
  5.  * No changes.
  6.  *
  7.  * Revision 1.55  1993/12/30  22:45:10  Rhialto
  8.  * Add hardware constants.
  9.  * Freeze for MAXON5.
  10.  *
  11.  * Revision 1.54  1993/06/24  04:56:00    Rhialto
  12.  * DICE 2.07.54R.
  13.  *
  14.  * Revision 1.53  92/10/25  02:19:07  Rhialto
  15.  * Add some symbols.
  16.  *
  17.  * Revision 1.51  92/04/17  16:13:00  Rhialto
  18.  * Freeze for MAXON3.
  19.  *
  20.  * Revision 1.46  91/10/06  18:24:25  Rhialto
  21.  *
  22.  * Freeze for MAXON
  23.  *
  24.  * Revision 1.43  91/09/28  01:53:37  Rhialto
  25.  * *** empty log message ***
  26.  *
  27.  * MKCI.C
  28.  *
  29.  * Generate c.i file for assembly parts to export stuff from C to ASM level.
  30.  */
  31.  
  32. #include "device.h"
  33. #include "layout.h"
  34. #include <exec/resident.h>
  35. #include <stdio.h>
  36.  
  37. #define OFFSETOF(tag, member)   ((long)(&((struct tag *)0)->member))
  38. #define OFFSET(label, structure, member) \
  39.     printf("%s\tEQU %d\n", label, OFFSETOF(structure, member))
  40. #define VALUE(label, value) \
  41.     printf("%s\tEQU %d\n", label, value)
  42.  
  43. /* Grr.. Dice does't ge t the following right... */
  44. #define DEFINE(label)   \
  45.     printf(#label "\tEQU %d\n", label)
  46.  
  47.  
  48. long
  49. log2(unsigned long x)
  50. {
  51.     long log;
  52.  
  53.     if (x) {
  54.     for (log = -1; x; log++)
  55.         x >>= 1;
  56.  
  57.     return log;
  58.     } else {
  59.     return -1;
  60.     }
  61. }
  62.  
  63. main(argc, argv)
  64. int argc;
  65. char **argv;
  66. {
  67.     if (argc > 1)
  68.     freopen(argv[1], "w", stdout);
  69.  
  70.     printf("; Generated by $Id: mkci.c,v 1.56 1996/12/21 23:34:35 Rhialto Rel $\n; Don't edit by hand!\n");
  71.  
  72.     OFFSET("md_Rawbuffer", MessyDevice, md_Rawbuffer);
  73.     OFFSET("md_MfmDecode", MessyDevice, md_MfmDecode[0]);
  74.     VALUE("md_SIZEOF", sizeof(struct MessyDevice));
  75.  
  76.     OFFSET("mu_TrackBuffer", MessyUnit, mu_TrackBuffer);
  77.     OFFSET("mu_CrcBuffer", MessyUnit, mu_CrcBuffer[0]);
  78.     OFFSET("mu_SectorStatus", MessyUnit, mu_SectorStatus[0]);
  79.     OFFSET("mu_InitSectorStatus", MessyUnit, mu_InitSectorStatus);
  80.     OFFSET("mu_CurrentTrack", MessyUnit, mu_CurrentTrack);
  81.     VALUE("MS_NSIDES", MS_NSIDES);
  82.     VALUE("LOG2_MS_NSIDES", log2(MS_NSIDES));
  83.     OFFSET("mu_CurrentSectors", MessyUnit, mu_CurrentSectors);
  84.     OFFSET("mu_ReadLen", MessyUnit, mu_ReadLen);
  85.     OFFSET("mu_WriteLen", MessyUnit, mu_WriteLen);
  86.  
  87. #ifdef READONLY
  88.     VALUE("READONLY", 1);
  89. #else
  90.     VALUE("READONLY", 0);
  91. #endif
  92. #ifdef HANDLE_IO_QUICK
  93.     VALUE("HANDLE_IO_QUICK", 1);
  94. #else
  95.     VALUE("HANDLE_IO_QUICK", 0);
  96. #endif
  97.     VALUE("UNITB_ACTIVE", UNITB_ACTIVE);
  98.     VALUE("MS_BPS", MS_BPS);
  99.     VALUE("MS_BPScode", log2(MS_BPS / 128));
  100.     VALUE("LOG2_MS_BPS", log2(MS_BPS));
  101.     VALUE("MS_SPT", MS_SPT);
  102.     VALUE("MS_SPT_MAX", MS_SPT_MAX);
  103.     VALUE("VERSION", VERSION);
  104.     VALUE("REVISION", REVISION);
  105.  
  106.     /* Some system include values: */
  107.     VALUE("RTC_MATCHWORD", RTC_MATCHWORD);
  108.     VALUE("RTF_AUTOINIT", RTF_AUTOINIT);
  109.     VALUE("NT_DEVICE", NT_DEVICE);
  110.     VALUE("LIBF_CHANGED", LIBF_CHANGED);
  111.     VALUE("LIBF_SUMUSED", LIBF_SUMUSED);
  112.  
  113.     OFFSET("ln_Type", Node, ln_Type);
  114.     OFFSET("ln_Name", Node, ln_Name);
  115.     OFFSET("dev_Flags", MessyDevice, dev_Flags);
  116.     OFFSET("dev_Version", MessyDevice, dev_Version);
  117.     OFFSET("dev_Revision", MessyDevice, dev_Revision);
  118.     OFFSET("dev_IdString", MessyDevice, dev_IdString);
  119. /*
  120. :.+1,$s/DEFINE(\(.*\));/VALUE("\1", \1);/
  121. */
  122.     VALUE("INDEXSYNC", INDEXSYNC);
  123.     VALUE("SYNC", SYNC);
  124.     VALUE("TLEN", TLEN);
  125.  
  126.     VALUE("INDEXGAP", INDEXGAP);
  127.     VALUE("INDXGAP", INDXGAP);
  128.     VALUE("INDXSYNC", INDXSYNC);
  129.     VALUE("INDXMARK", INDXMARK);
  130.     VALUE("INDEXGAP2", INDEXGAP2);
  131.  
  132.     VALUE("IDGAP2", IDGAP2);
  133.     VALUE("IDSYNC", IDSYNC);
  134.     VALUE("IDMARK", IDMARK);
  135.     VALUE("IDDATA", IDDATA);
  136.     VALUE("IDCRC", IDCRC);
  137.  
  138.     VALUE("DATAGAP1", DATAGAP1);
  139.     VALUE("DATAGAP2", DATAGAP2);
  140.     VALUE("DATASYNC", DATASYNC);
  141.     VALUE("DATAMARK", DATAMARK);
  142.     VALUE("DATACRC", DATACRC);
  143.  
  144.     return 0;
  145. }
  146.  
  147.